<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>箭头函数</title>
</head>
<body>
    <script>
        // ES6 允许使用「箭头」（=>）定义函数。 function fn(a,b,c){}   
        //1. 声明格式 
        function fn(a,b){
            console.log(a,b);
        }
        let f1 = (a,b)=>{
            // 函数体
            console.log(a,b);
            return 123;
        }
        
        //2. 函数调用
        let res = f1(1,2);
        console.log(res);

        // 箭头函数特点 
        // 1. this 的值是静态的.  call apply
                // 定义的时候就已经决定了this的指向，指向函数当前的父级作用域。
                // 普通函数this指向，不取决于在哪儿定义，也不取决于在哪儿执行，只取决于谁调用的
        // let f2 = ()=>{
        //     console.log(this);
        // }
        // let obj = {name:'atguigu',age:10};
        // f2.call(obj);
        // 2. 不能作为构造函数使用
        // let Person = (name,age)=>{

        // }
        // new Person('yuonly',20);
        // 3. 箭头函数本身没有 arguments 
        // let f11 = (a,b,c)=>{
        //     console.log(arguments);
        // }
        // f11(1,2,3);
        // 4. 箭头函数简写
        
        // 一 不写小括号, 当形参有且只有一个的时候
        // let study = name=>{
        //     console.log(name + '在学习');
        // }
        // study('付玺山');

        // 二 不写花括号, 当代码体只有一条语句的时候, 并且语句的执行结果为函数返回值的 (如果不写花括号的话, return 也不能写)
        
        // let say = words=>console.log(words);
        // say('鲁迅先生，文坛泰斗');

        // function sum(a,b){
        //     return a + b;
        // }
        let sum = (a,b)=>a+b;

        console.log(sum(1,2));

        
    </script>
</body>
</html>